//
//  MainViewController.swift
//  weibo
//
//  Created by yellow on 15/10/14.
//  Copyright © 2015年 yellow. All rights reserved.
//

import UIKit

/**
微博项目的界面框架是最最外层是tabbarVC里面包含4个由naVC包含的tableVC,中间是一个发送微博btn
*/
class MainViewController: UITabBarController {
    
    // MARK: - 事件响应事件
    //为了不让其他类使用该方法使用private，但是在事件调用机制上还是靠oc的runtime，事件触发机制是以责任链形式来分发的，最后调用该方法是UIApplication来调用的，为了让它能访问到该方法所以一般事件触发的函数前加上@objc
    @objc private func sendWeibo(){
        print("进入发布微博界面")
        let nav = UINavigationController(rootViewController: ComposeViewController())
        presentViewController(nav, animated: true, completion: nil)
    }
    

    // MARK: - 控制器生命周期
    override func viewDidLoad() {
        super.viewDidLoad()
        //添加tabBarItems
        addChildViewControllers()
        
        //添加tabBar中的发送微博按钮
        setupSendWeiboBtn()
    }
    
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        //将btn带到tabBar的顶部，需要在其他的tabBarIteam添加到view上才有效，所以在viewDidLoad中无效
        tabBar.bringSubviewToFront(sendWeiboBtn)
    }

    
    // MARK: - 懒加载
    private lazy var sendWeiboBtn:UIButton = UIButton(imageName: "tabbar_compose_icon_add", backImageName: "tabbar_compose_button")
    
}

// MARK: - 界面设置
extension MainViewController{
    
    //添加tabBar中的发送微博按钮，并设置位置
    private func setupSendWeiboBtn(){
        tabBar.addSubview(sendWeiboBtn)
        tabBar.bringSubviewToFront(sendWeiboBtn)
        let tabBarItemWidth = tabBar.bounds.width / CGFloat(childViewControllers.count) - 1
        sendWeiboBtn.frame = CGRectInset(tabBar.bounds, 2*tabBarItemWidth, 0)
        sendWeiboBtn.addTarget(self, action: "sendWeibo", forControlEvents: UIControlEvents.TouchUpInside)
    }
    
    /// 创建app的中4个tabBarVC中的item控制器
    private func addChildViewControllers() {
        //tintColor是一个描述一个视图中的线条的颜色,当tabBarItem点击后就会激活tintColor
        //虽然有点击的高亮图片，但是设置能使用颜色来达到效果就因使用颜色，这样能降低app使用的内存
        tabBar.tintColor = UIColor.orangeColor()
        
        addChildViewController(HomeTableViewController(), imageName: "tabbar_home", title: "首页")
        addChildViewController(MessageTableViewController(), imageName: "tabbar_message_center", title: "消息")
        
        //为中间按钮分隔中一个item的位置来
        addChildViewController(UIViewController())
        
        addChildViewController(DiscoverTableViewController(), imageName: "tabbar_discover", title: "发现")
        addChildViewController(ProfileTableViewController(), imageName: "tabbar_profile", title: "我")
    }
    
    /// 根据传入的vc和参数设置好后，添加到tabBarVC中
    ///
    /// - parameter vc:        tabBarVC中的item控制器
    /// - parameter imageName: 控制显示的图片
    /// - parameter title:     控制器显示的名称
    private func addChildViewController(vc:UIViewController ,imageName:String,title:String) {
        vc.tabBarItem.image = UIImage(named: imageName)
        vc.title = title
        addChildViewController(UINavigationController(rootViewController: vc))
    }

}
